//index.js
const app = getApp()
const regeneratorRuntime = app.globalData.regeneratorRuntime
const networkUtil = app.globalData.networkUtil
const util = app.globalData.util

const logPrefix = "pages.index"

Page({
    data: {},

    onLoad: function() {
        console.info("index.onLoad()..")
        let that = this

        /**
         * 按顺序获取用户的相关信息。
         */
        if (!util.isEmpty(app.globalData.openId)) {
            //若app.globalData.openId含有信息
            that.getUserInfo_control()
        } else {
            /**
             * 若app.globalData.openId为空
             */
            app.openIdReadyCallback = (res) => {
                that.getUserInfo_control()
            }
        }
    },

    /**
     * 按顺序获取用户的相关信息。
	 * 获取wxUser,token,functionModels,并跳转到mainPage页面。
     * 若未找到wxUser信息，则进行用户绑定。
     */
    getUserInfo_control: function() {
        let that = this

        /**
         * 1、根据openId获取wxUser信息。
         */
        that.getWxUser().then((res) => {
            //console.info(logPrefix+" getUserInfo_control() res=", res)
			
            /**
			 * 1-2、获取用户token信息。
             */
            if (app.globalData.SUCCESS_STR==res) {
				//获取用户token信息
                that.getUserToken().then((res)=>{

					/**
					 * 1-3、根据idcardNo获取该用户可操作的功能菜单,接着跳转到mainPage页面。
					 */
					if (app.globalData.SUCCESS_STR == res) {
						//根据idcardNo获取该用户可操作的功能菜单
						that.getFunctionModelsByIdcardNo()
					}
				})
            }
        })
    },
	
    /**
     * 根据openId获取wxUser信息，若未获取到wxUser，则进行用户绑定。
     */
    getWxUser: function() {
        let that = this
        let url = app.globalData.baseUrl + "/user/getMpUserByOpenId"
        let requestData = {
            openId: app.globalData.openId
        }

        return networkUtil.request_get(url, requestData).then((res) => {
            /**
             * 若已获取到wxUser信息，存储wxUser信息..
             */
            app.globalData.wxUser = res.data;
            //将wxUser存入本地缓存中
            wx.setStorageSync("wxUser", res.data)
            return app.globalData.SUCCESS_STR
        }).catch((res) => {
            /**
             * 若获取wxUser信息失败..
             */
            //若res.status为501，则进行用户绑定
            if (res.status == 501) {
                wx.redirectTo({
                    url: '../wxBindV2/wxBindV2'
                })
                return "WX_BIND"
            }
            return app.globalData.ERROR_STR
        })
    },

    /**
     * 获取用户token。
     */
    getUserToken: function() {
        let url = app.globalData.baseUrl + "/token/getTokenByOpenId"

        return networkUtil.getTokenByOpenId(url).then((res) => {
            //若获取到token信息
            console.log("根据openId获取token,已完成..")
            //util.prettyPrint("token信息", res);
            app.globalData.token = res.data;
            //将token存入本地缓存中
            wx.setStorageSync("token", res.data)
			return app.globalData.SUCCESS_STR

        }).catch((res) => {
            //若未获取到token信息
            console.error("获取token失败!", res)
			return app.globalData.ERROR_STR
        })
    },

    /**
     * @deprecated 已舍弃。
     * 根据wxUser.level获取该用户可操作的功能菜单,接着跳转到mainPage页面。
     */
    getFunctionModelsByLevel: function() {
        let that = this
        let url = app.globalData.baseUrl + "/user/getFunctionModelsByLevel"
        let requestData = {
            level: app.globalData.wxUser.level
        }

        networkUtil.request_get(url, requestData).then((res) => {
            //若获取到功能菜单..
            console.log("已获取到该用户可操作的功能菜单..");
            app.globalData.functionModels = res.data
            //转到mainPage页面
            wx.redirectTo({
                url: '../mainPage/mainPage'
            })
            return app.globalData.SUCCESS_STR
        }).catch((res) => {
            //若未获取到功能菜单..
            console.error("未获取到该用户可操作的功能菜单!", res)
            return app.globalData.ERROR_STR
        })
    },

	/**
	 * 根据idcardNo获取该用户可操作的功能菜单,接着跳转到mainPage页面。
	 */
    getFunctionModelsByIdcardNo: function() {
        let that = this
        let url = app.globalData.baseUrl + "/user/getFunctionModelsByIdcardNo"
        let requestData = {
            idcardNo: app.globalData.wxUser.idcardno
        }

        networkUtil.request_get(url, requestData).then((res) => {
            //若已获取到
			console.info(logPrefix +" 已获取到该用户可操作的功能菜单..")
            app.globalData.functionModels = res.data
            //转到mainPage页面
            wx.redirectTo({
                url: '../mainPage/mainPage'
            })
            return app.globalData.SUCCESS_STR
        }).catch((res) => {
            //若未获取到
            console.error(logPrefix+" 获取该用户可操作的功能菜单,出错!", res)
            return app.globalData.ERROR_STR
        })
    }






})